package com.itzhoun.entity;

/**
 * @author 周楠
 * @Date 2022/08/15/下午 11:43
 */

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.itzhoun.annation.CronValidate;
import com.itzhoun.constants.ScheduleConstants;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import java.io.Serializable;

@Data
@TableName("sys_job")
@ApiModel("定时任务入参信息")
public class SysJob implements Serializable {

    private static final long serialVersionUID = -5910081647361657545L;

    /** 任务ID */
    @TableId(value = "job_id")
    private Long jobId;

    /** 任务名称 */
    @TableField(value = "job_name")
    @ApiModelProperty("任务名称")
    private String jobName;

    /** 任务组名 */
    @TableField("job_group")
    @ApiModelProperty("任务组名")
    private String jobGroup;

    /** 调用目标字符串 */
    @TableField("invoke_target")
    @ApiModelProperty("调用目标字符串")
    private String invokeTarget;

    /** cron执行表达式 */
    @TableField("cron_expression")
    @CronValidate
    @ApiModelProperty("cron执行表达式")
    private String cronExpression;

    /** cron计划策略 */
    @TableField("misfire_policy")
    @ApiModelProperty("cron计划策略")
    private String misfirePolicy = ScheduleConstants.MISFIRE_DEFAULT;

    /** 是否并发执行（0允许 1禁止） */
    @TableField("concurrent")
    @Max(1)
    @Min(0)
    @ApiModelProperty("是否并发执行（0允许 1禁止）")
    private String concurrent;

    /** 任务状态（0正常 1暂停） */
    @TableField("status")
    @ApiModelProperty("任务状态（0正常 1暂停）")
    private String status;

    @TableField("create_by")
    @ApiModelProperty("创建人")
    private String createBy;

    @TableField("update_by")
    @ApiModelProperty("修改人")
    private String updateBy;
}
